/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.easoftware.code.beans.prime;

import com.excel2objects.common.excel.engine.ExcelParser;
import java.io.Serializable;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import net.easoftware.code.beans.TipoCargaDatos;
import net.easoftware.code.beans.cargas.AsOff;
import net.easoftware.code.beans.cargas.ChequeRechazadoCA;
import net.easoftware.code.beans.cargas.OrdenCA;
import net.easoftware.code.beans.cargas.OrdenRetenidaCA;
import net.easoftware.code.beans.cargas.VentaCA;

/**
 *
 * @author eliu
 */
@FacesConverter("cargasConverter")
public class TiposCargaConverter implements Converter, Serializable {

    public static List<TipoCargaDatos> listaTipoCargaDatos;

    static {
        try {
            listaTipoCargaDatos = new LinkedList<TipoCargaDatos>(
                    Arrays.asList(new TipoCargaDatos(new ExcelParser<AsOff>(1), "AsOff", AsOff.class),
                    new TipoCargaDatos(new ExcelParser<ChequeRechazadoCA>(1), "Cheques Rechazados", ChequeRechazadoCA.class),
                    new TipoCargaDatos(new ExcelParser<OrdenCA>(1), "Ordenes", OrdenCA.class),
                    new TipoCargaDatos(new ExcelParser<OrdenRetenidaCA>(1), "Ordenes Retenidas", OrdenRetenidaCA.class),
                    new TipoCargaDatos(new ExcelParser<VentaCA>(1), "Ventas", VentaCA.class)));
        }
        catch (InstantiationException ex) {
            Logger.getLogger(TiposCargaConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (IllegalAccessException ex) {
            Logger.getLogger(TiposCargaConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (ClassNotFoundException ex) {
            Logger.getLogger(TiposCargaConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s) {
        if (s.trim().equals("")) {
            return null;
        } else {

            for (TipoCargaDatos lt : listaTipoCargaDatos) {
                if (lt.getDescripcion().equals(s)) {
                    return lt;
                }
            }
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
        if (o == null || !( o instanceof TipoCargaDatos )) {
            return "";
        } else {
            TipoCargaDatos tcd = (TipoCargaDatos) o;
            return tcd.getDescripcion();
        }
    }
}
